home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A)[a].zip / Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A)[a].po / PRINT.CHARM.S < prev    next >
Text File  |  1996-12-24  |  4KB  |  207 lines

  1. ***************************
  2. *  PRINT.CHARM.S Source   *
  3. *    By Frank H. Sweet    *
  4. *    Copyright 1991 by    *
  5. *   MindCraft Publ. Corp. *
  6. ***************************
  7. *
  8. CROUT     = $FD8E
  9. COUT      = $FDED
  10. *
  11. CLREOL    = $FC9C
  12. CLREOP    = $FC42
  13. CH        = $24
  14. TABV      = $FB5B
  15. WNDLFT    = $20
  16. WNDWDTH   = $21
  17. *
  18. DESC      = $EB
  19. FACMO     = $A0
  20. STRPRT    = $DB3D
  21. STROUT    = $DB3A
  22. PRBLNK    = $F948
  23. PRBL2     = $F94A
  24. *
  25. RDKEY     = $FD0C
  26. INVFLG    = $32
  27. PRA       = $FE95        ;PR#'A' - OUTPORT
  28. DOSHOOK   = $3D0         ;Dos or ProDOS exit
  29. *
  30. *
  31.           ORG $6000
  32. *
  33. *BUILD 5-BYTE DESCRIPTOR FOR STRING (LENGTH,LO,HI,00,00)
  34.           LDA #MESS2-MESS1 ;CALCULATES STRING LENGTH
  35.           STA DESC
  36.           LDA #<MESS1
  37.           STA DESC+1
  38.           LDA #>MESS1
  39.           STA DESC+2
  40.           LDA #0
  41.           STA DESC+3
  42.           STA DESC+4
  43. *
  44. *
  45.           LDA #3
  46.           JSR PRA        ;PR#3 - 80COLUMN SCREEN
  47.           JSR D1
  48. *
  49. *DEMO1 --- COUT, PRBLNK, PRBL2, CROUT
  50. *
  51.           LDA #"A"       ;NORMAL
  52.           JSR COUT
  53.           JSR PRBLNK
  54.           LDA #'A'       ;INVERSE
  55.           JSR COUT
  56.           LDX #32        ;32 BLANKS
  57.           JSR PRBL2
  58.           LDA #"B"
  59.           JSR COUT
  60.           JSR CROUT      ;TO TERMINATE LINE
  61.           JSR CROUT      ;TO CREATE BLANK LINE
  62.           JSR D2
  63. *
  64. *DEMO2 --- USING HORIZONTAL CURSGR
  65. *
  66.           LDA #"1"
  67.           JSR COUT
  68.           LDX #64
  69.           STX CH
  70.           LDA #"2"
  71.           JSR COUT
  72.           LDX #32
  73.           STX CH
  74.           LDA #"3"
  75.           JSR COUT
  76.           JSR CROUT
  77.           JSR CROUT
  78.           JSR D3
  79. *
  80. *DEMO3 --- SETTING LEFT EDGE OF SCREEN
  81. *         AND USING VTAB TO CREATED INDENTED BLOCK
  82. *
  83.           LDA #36        ;MUST BE EVEN!
  84.           STA WNDLFT     ;SET LEFT EDGE OF SCREEN TO 36
  85.           LDA #11
  86.           JSR TABV       ;DO VTAB TO 11 (LINE 12)
  87.           JSR CROUT      ;NEEDED TO GET TO LEFT EDGE
  88.                          ;NOW AT 12 (LINE 13)
  89. *
  90. *DEMO3 --- STRPRT
  91. *
  92.           LDA #<DESC
  93.           STA FACMO
  94.           LDA #>DESC
  95.           STA FACMO+1
  96.           JSR STRPRT     ;FACMO-LO POINTS TO STRING
  97.           LDA #20        ;MUST BE EVEN
  98.           STA WNDWDTH    ;SET WINDOW TO WIDTH 20
  99.           JSR CROUT      ;GO TO LEFT SIDE OF WINDOW
  100.           LDX #5         ;INDENT 5
  101.           STX CH
  102.           JSR STRPRT
  103. *
  104.           LDA #0
  105.           STA WNDLFT
  106.           LDA #80
  107.           STA WNDWDTH    ;RESTORE NORMAL WINDOW
  108.           JSR CROUT
  109. *
  110.           LDA #48        ;SET CURSOR TO HORIZONTAL 48
  111.           STA CH
  112. *
  113. *DEMO3 --- STROUT
  114. *
  115.           LDA #<MESS1
  116.           LDY #>MESS1    ;POINT TO STRING LO-HI 'A'-'Y'
  117.           JSR STROUT
  118.           JSR CROUT
  119.           JSR D4
  120. *
  121. *DEMO4 --- INVERSE MESSAGE AND CLR ROUTINES
  122. *
  123.           LDX #5         ;INDENT 5
  124.           STX CH
  125.           LDA #21
  126.           JSR TABV
  127.           LDX #$3F       ;INVERSE
  128.           STX INVFLG
  129.           JSR TOUCH
  130.           LDX #$FF       ;NORMAL
  131.           STX INVFLG
  132. *
  133.           LDA #24
  134.           STA CH
  135.           LDA #21
  136.           JSR TABV
  137.           JSR CLREOL     ;ERASE PART OF MESSAGE
  138.           LDX #10        ;10 BLANKS
  139.           JSR PRBL2
  140.           JSR TOUCH
  141.           LDA #38
  142.           STA CH
  143.           LDA #12
  144.           JSR TABV
  145.           JSR CLREOP
  146.           JSR CROUT
  147.           JSR DOSHOOK
  148.           RTS
  149. *
  150. *
  151. D1        LDA #<DEMO1
  152.           LDY #>DEMO1
  153.           JSR STROUT
  154.           JSR TOUCH
  155.           RTS
  156. *
  157. *
  158. D2        LDA #<DEMO2
  159.           LDY #>DEMO2
  160.           JSR STROUT
  161.           JSR TOUCH
  162.           RTS
  163. *
  164. *
  165. D3        LDA #<DEMO3
  166.           LDY #>DEMO3
  167.           JSR STROUT
  168.           JSR TOUCH
  169.           RTS
  170. *
  171. *
  172. D4        LDA #<DEMO4
  173.           LDY #>DEMO4
  174.           JSR STROUT
  175.           JSR TOUCH
  176.           RTS
  177. *
  178. *
  179. TOUCH     LDA #<INSTR0
  180.           LDY #>INSTR0
  181.           JSR STROUT
  182.           JSR RDKEY
  183.           JSR CROUT
  184.           RTS
  185. *
  186. INSTR0    ASC 'To continue, touch a key '
  187.           HEX 00         ;TERMINATOR FOR STROUT STRING
  188. *
  189. MESS1     ASC "MARY HAD A LITTLE LAMB "
  190.           HEX 0D         ;CARRIAGE RETURN TO BREAK LINE
  191.           ASC "THAT'S NICE !!!"
  192.           HEX 00
  193. *
  194. MESS2     ASC " "        ;FAKE MESSAGE
  195. *
  196. DEMO1     ASC "DEMO 1 --- COUT, PRBLNK, PRBL2, CROUT. "
  197.           HEX 00
  198. *
  199. DEMO2     ASC "DEMO 2 --- USING HORIZONTAL CURSOR. "
  200.           HEX 00
  201. *
  202. DEMO3     ASC "DEMO 3 --- WINDOW, INDENTED BLOCK, STRPRT, STROUT. "
  203.           HEX 00
  204. *
  205. DEMO4     ASC "DEMO 4 --- INVERSE AND CLR. "
  206.           HEX 00
  207.